import Seo from '@/core/components/Seo' import LogoSpinner from '@/core/components/elements/Spinner/LogoSpinner' import { getIdFromSlug } from '@/core/utils/slug' import productApi from '@/lib/product/api/productApi' import PageNotFound from '@/pages/404' import dynamic from 'next/dynamic' import { useRouter } from 'next/router' import cookie from 'cookie' import axios from 'axios' import { useProductContext } from '@/contexts/ProductContext' import { useEffect } from 'react' import { updateItemCart } from '@/core/utils/cart' const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')) const Product = dynamic(() => import('@/lib/product/components/Product/Product')) export async function getServerSideProps(context) { const { slug } = context.query const cookies = context.req.headers.cookie const cookieObj = cookies ? cookie.parse(cookies) : {} const auth = cookieObj.auth ? JSON.parse(cookieObj.auth) : {} const tier = auth.pricelist ? auth.pricelist : false const authToken = auth?.token || '' let response = await axios( `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/product-detail?id=` + getIdFromSlug(slug) + '&auth=' + tier ) let product = response.data // let productSolr = await productApi({ id: getIdFromSlug(slug), headers: { Token: authToken } }) // let productSolr = null if (product?.length == 1) { product = product[0] } else { product = null } return { props: { product } } } export default function ProductDetail({ product }) { const router = useRouter() const { setProduct } = useProductContext() useEffect(() => { if (product) { setProduct(product) } }, [product, setProduct]) useEffect(() => { const { action, variantId, qty } = router.query const addToCart = async () => { const data = { productId: variantId, quantity: qty, selected: true, programLineId: null, source: action } console.log('data dr test', data) await updateItemCart(data) const redirectURL = action === 'buy' ? '/shop/checkout?source=buy' : '/shop/cart' router.push(redirectURL) } if (action && variantId && qty) { addToCart() } }, [router]) if (!product) return return ( {!product && (
)} {product && }
) }